#include "iostream"
using namespace std;

//1 new delete 操作符号 c++的关键字
//malloc free函数

//2 new 在堆上分配内存  delete 
//分配基础类型 、分配数组类型、分配对象

//3


class Test
{
public:
	Test(int mya, int myb)
	{
		a = mya;
		b = myb;
		cout<<"构造函数，我被调用了"<<endl;
	}
	~Test()
	{
		cout<<"析构函数，我被调用了"<<endl;
	}
	int getA()
	{
		return a;
	}
protected:
private:
	int a;
	int b;
};


int getTestObj(Test **my)
{
		Test *p = new Test(1, 2);
		*my = p;
		return 0;
}

int main()
{
	

	{
		Test t1(1, 2);//在临时区分配内存
	}

	{
		//new + 类型  返回一个 内存首地址
		//new操作符也会自动的调用这个类的构造函数 、
		//delete自动的调用这个类的析构函数 
		//相当于我们程序员可以手工控制类的对象的生命周期
		Test *p = new Test(1, 2);
		delete p;
	}

	{
		Test *p;
		getTestObj(&p);
		cout<< " p->getA() :" << p->getA()   <<endl;
		delete p;
	}
	
	return 0;

}